#ifndef CLIENT_STATE_H_
#define CLIENT_STATE_H_

#include "NonCopyable.h"
#include "Singleton.h"
#include "SDL_GameState.h"
#include "Camera.h"
#include "Color.h"

class NetworkEventGenerator;

//displays an avi and then fades out
class ClientState : public SDL_GameState, public NonCopyable
{
private:
    ClientState();
    friend class Singleton<ClientState>;

public:
    /* GameState OverRides */
	virtual void	Update();
	virtual void	Draw();
	virtual void	Initialise();
	virtual void	CleanUp();
	virtual void	OnResume();

    /* Event Handling OverRides*/
    virtual void OnKeyBoardDownEvent(const SDL_KeyboardEvent& Event);
    virtual void OnResizeEvent(const SDL_ResizeEvent& Event);

    /* State Specific */

    /* The load functions */
    void SetUpOpenGl();
    void SetUpCameras();

private:
    //The main camera
    pCamera m_camera;
    //Screen sizes
    int m_screenX;
    int m_screenY;
    Color m_clearColor;
    Vec3f m_cameraPosition;
    NetworkEventGenerator* m_nwEG;
};

typedef Singleton<ClientState> TheClientState;

#endif

